#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//字符串逆序
//将参数字符串的字符反向排列，不是逆序打印
int my_strlen(char * str) {
	int count = 0;
	while (*str !='\0')
	{
		count++;
		str++;
	}
	return count;

}
//
//1.循环方式：
//void reverse_string(char *str) {
//	int left = 0;
//	int right = my_strlen(str) - 1; //不使用库函数
//	while (left<right)
//	{
//		char tmp = str[left];  //char tmp = *(str+left); 指针写法
//		str[left] = str[right]; // 同理可换  *(str+left)= *(str+right);
//		str[right] = tmp;
//		left++;
//		right--;
//	}
//	
//}
//
//2.递归方式：
void reverse_string(char *str) {
	char tmp = *str; //创建新tmp 等字符串第一个位置(a)
	int	len = my_strlen(str);// 求出字符串的长度
	 *str=*(str + len - 1);  //*(str + len - 1)是找到字符串最后一个位置(f)     指针指向字符位置  这一行便是最一个和第一个交换位置
	 *(str + len - 1) = '\0';   // 将最后一个位置  换成‘\0’字符串结束标识
	 //判断条件
	 if (my_strlen(str+1)>=2)   //当中间字符串为零时  就跳出
	 {
		 reverse_string(str + 1);   //逆序中间位置  str+1 的字符（bcde）
	 }
	
	 *(str + len - 1) = tmp;    //  最后一个位置(f) 等于tmp

}

int main() {
	 
	char arr[] = "abcdef";
	reverse_string(arr); //数组名arr是数组arr首元素的地址
	printf("%s\n", arr); //fedcda

	return 0;